package controllers;

import play.*;
import play.db.DB;
import play.mvc.*;

import java.io.ByteArrayInputStream;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.*;

import com.google.gson.Gson;

import lib.UtilsInput;
import models.*;

public class Reporte_10 extends Controller{
	
	public static void Reporte_10(){
		if(Security.isAuthenticated() && Security.havePermission())
			render();
		else
			Application.login();
	}
	
	public static void getReporte10(String from,String to){
		String query = "SELECT sigpc_empleado.emp_nombres AS empleado,SUM(sigpc_proyecto.pro_monto) AS monto FROM sigpc_proyecto INNER JOIN sigpc_cotizacion ON sigpc_proyecto.pro_cot_id = sigpc_cotizacion.cot_id INNER JOIN sigpc_empleado ON sigpc_cotizacion.cot_id_emp = sigpc_empleado.emp_id GROUP BY sigpc_empleado.emp_nombres";
		String str = null;
		Gson gson = new Gson();
		Connection conn = DB.getConnection();
	
		/*
		 * Lista de objetos 
		 */
		List<Reporte10> listReporte = new ArrayList<Reporte10>();
		try {
			if (from != null &&  to != null)
			{
				if (!from.equalsIgnoreCase("") &&  !to.equalsIgnoreCase("") )
				query = "SELECT sigpc_empleado.emp_nombres AS empleado,SUM(sigpc_proyecto.pro_monto) AS monto FROM sigpc_proyecto INNER JOIN sigpc_cotizacion ON sigpc_proyecto.pro_cot_id = sigpc_cotizacion.cot_id INNER JOIN sigpc_empleado ON sigpc_cotizacion.cot_id_emp = sigpc_empleado.emp_id  WHERE sigpc_proyecto.pro_fecha_ini BETWEEN '" + from + "' AND '" + to + "' GROUP BY sigpc_empleado.emp_nombres ";
			}
		
		
		ResultSet rs = conn.createStatement().executeQuery(query);
		
		 while (rs.next()) {
			 Reporte10 reporte = new Reporte10(rs.getRow(), rs.getString("empleado"), rs.getDouble("monto"));
			 listReporte.add(reporte);
		 }
		 
		 if(listReporte.size()!=0){
			 str = "{\"success\":true ,\"records\":" + listReporte.size()
						+ ", \"total\":1 , \"page\":1, \"rows\":" + gson.toJson(listReporte)
						+ "}";				
			 renderJSON(str);			 
		 }
		 else{
			 str = "{\"success\":false,\"records\":" + listReporte.size()
						+ ", \"total\":0 , \"page\":0}";
				
				 renderJSON(str);
		 }		 
     	
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			System.out.println("Cae en el catch");
		}
	}
	
	//JASPER REPORT XLS
	public static void  download_report(String from, String to, String formato) {
	    Map reportParams = new HashMap();
	    
	   if (formato != null)
	   {
	  reportParams.put("from", from);
	  reportParams.put("to",  to);
	    
	  if (formato.equalsIgnoreCase("html"))
		renderHtml( UtilsInput.toString((ByteArrayInputStream) lib.BaseJasperReport.generateReport("reporte_10", reportParams,formato)));
		
	  else
		  renderBinary(lib.BaseJasperReport.generateReport("reporte_10", reportParams,formato), "reporte_10."+ formato);
	   
	   }
	  }

}
